package baidumodel.entity.chat;

import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;

/**
 * api :<a href="https://cloud.baidu.com/doc/WENXINWORKSHOP/s/jlil56u11">https://cloud.baidu.com/doc/WENXINWORKSHOP/s/jlil56u11</a>
 *
 * @Author wuchenxi
 * @Date 2023-07-23 18:02:01
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class BaseResponse extends ResponseCode implements Serializable {

    /**
     * 本轮对话的id
     */
    protected String id;

    /**
     * 	回包类型。
     * chat.completion：多轮对话返回
     */
    protected String object;

    /**
     * 时间戳
     */
    protected Integer created;

    /**
     * 表示当前子句的序号。只有在流式接口模式下会返回该字段
     */
    protected String sentence_id;

    /**
     * 表示当前子句是否是最后一句。只有在流式接口模式下会返回该字段
     */
    protected Boolean is_end;

    /**
     * 	当前生成的结果是否被截断
     */
    protected Boolean is_truncated;

    /**
     * 对话返回结果
     */
    protected String result;

    /**
     * 表示用户输入是否存在安全，是否关闭当前会话，清理历史回话信息
     * true：是，表示用户输入存在安全风险，建议关闭当前会话，清理历史会话信息
     * false：否，表示用户输入无安全风险
     */
    protected Boolean need_clear_history;

    /**
     * 当need_clear_history为true时，此字段会告知第几轮对话有敏感信息，如果是当前问题，ban_round=-1
     */
    protected Integer ban_round;

    /**
     * token统计信息，token数 = 汉字数+单词数*1.3 （仅为估算逻辑）
     */
    protected Usage usage;

    @Data
    public static class Usage implements Serializable {
        /**
         * 问题tokens数
         */
        protected Integer prompt_tokens;

        /**
         * 回答tokens数
         */
        protected Integer completion_tokens;
        
        /**
         * tokens总数
         */
        protected Integer total_tokens;
    }
}
